Field of the Invention
Embodiments of the present invention generally relate to an operating system and, more particularly, a method and apparatus for extending functionality of the operating system.
Description of the Related Art
Mobile computing devices such as personal digital assistants (PDAs), tablet computers and devices that are a hybrid cellular phone and computer are becoming more prevalent in society. Manufacturers of these devices strive to provide a user the same functionality offered by a conventional desktop computer. However, due to the smaller physical size of the devices, storage and memory capacity are limited by the number of memory and storage devices that can physically fit into the device.
Mobile computing devices generally utilize a special operating system (OS) specifically designed for the mobile computing device. Such an operating system may take into account a need for the mobile computing device to conserve battery life, connect with a wireless network, operate in conjunction with a cellular telephone network, synchronize files and data with a conventional desktop computer, and the like.
The operating system is a collection of computer programs or routines which control execution of application programs and provides services such as resource allocation, scheduling, input/output control, and data management. Most operating systems store data in a hierarchical (tree) structure. For example, MICROSOFT WINDOWS stores data in a file. Each file is stored in a directory, also known as a folder. Collectively, the files, folders and method of organization form a file system.
The file system governs the organization, storage and access of data stored in the files by the operating system. The file system specifies a convention for naming files. These conventions include the maximum number of characters in a name, which characters can be used, and how long of a file name suffix can be used. The file system also includes a format for specifying a path to a file through the structure of directories. The file system specifies a minimum and maximum size, e.g., byte size, for each file. The file system controls file attributes, such as whether a file is a “read only” file or a “hidden file”, i.e., a file generally not visible to a user examining the contents of a directory.
The file system and operating system work in conjunction with each other to determine the level of functionality available to the user. The default file system provided with the operating system may not offer the desired level of functionality required by the user. The functionality of the operating system may be extended by hooking (redirecting) calls to the file system. However, hooking calls to the file system often leads to instability of the operating system and the computing device. Multiple software programs may try to simultaneously hook the same call to the file system which also causes the operating system to become unstable. Therefore, operating system providers generally do not support hooking the file system.
Thus, there is a need in the art for a method and apparatus that extends the functionality of an operating system without causing instability of the operating system.